Spring এবং Apache CXF একসঙ্গে ব্যবহৃত হলে ওয়েব সার্ভিস ডেভেলপমেন্ট আরও সহজ এবং শক্তিশালী হয়ে ওঠে। Spring এর Dependency Injection (DI) এবং সহজ কনফিগারেশন ক্ষমতা Apache CXF এর ওয়েব সার্ভিস ফিচারগুলোর সঙ্গে একত্রিত হয়ে একটি শক্তিশালী ওয়েব সার্ভিস অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
Spring এবং Apache CXF এর ইন্টিগ্রেশন সাধারণত দুটি মূল উপায়ে করা হয়:
এই টিউটোরিয়ালে আমরা Spring Framework এবং Apache CXF এর ইন্টিগ্রেশন দেখব।
Spring এবং Apache CXF এর ইন্টিগ্রেশন করার জন্য আপনাকে pom.xml
ফাইলে কিছু নির্দিষ্ট ডিপেনডেন্সি যোগ করতে হবে। এখানে একটি pom.xml
ফাইলের উদাহরণ দেওয়া হল:
<dependencies>
<!-- Spring Web Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.9</version> <!-- Latest version -->
</dependency>
<!-- Apache CXF Dependency for JAX-WS -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.0</version> <!-- Latest version -->
</dependency>
<!-- Apache CXF Dependency for JAX-RS (RESTful Web Services) -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.5.0</version>
</dependency>
<!-- Spring Context Dependency (for Spring DI) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
<!-- Spring CXF Integration -->
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>3.0.10</version>
</dependency>
<!-- JAXB (XML binding) -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
এখানে উল্লেখযোগ্য ডিপেনডেন্সিগুলি:
Spring XML কনফিগারেশন ব্যবহার করে Apache CXF ওয়েব সার্ভিস কনফিগার করা সম্ভব। আপনাকে applicationContext.xml
ফাইলে কিছু নির্দিষ্ট কনফিগারেশন করতে হবে।
প্রথমে applicationContext.xml
ফাইলে Apache CXF সার্ভিস কনফিগার করুন:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Apache CXF Bean Definition for the Web Service -->
<bean id="helloWorldService" class="com.example.ws.HelloWorldServiceImpl"/>
<!-- Apache CXF Bus Bean -->
<bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus" />
<!-- Apache CXF JAX-WS Server Factory Bean -->
<bean id="jaxwsServer" class="org.apache.cxf.jaxws.EndpointImpl">
<property name="service" ref="helloWorldService"/>
<property name="address" value="/helloWorld"/>
</bean>
</beans>
এখানে:
helloWorldService
: আপনার ওয়েব সার্ভিস ইমপ্লিমেন্টেশনের ক্লাস।cxf
: CXF এর SpringBus
Bean, যা Apache CXF এর প্রধান কম্পোনেন্ট।jaxwsServer
: JAX-WS সার্ভার ফ্যাক্টরি, যা ওয়েব সার্ভিসের ঠিকানা এবং সার্ভিস ইমপ্লিমেন্টেশন সংযুক্ত করে।এটি একটি সাধারণ SOAP ওয়েব সার্ভিস ক্লাস:
package com.example.ws;
import javax.jws.WebService;
@WebService(endpointInterface = "com.example.ws.HelloWorldService")
public class HelloWorldServiceImpl implements HelloWorldService {
@Override
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
এটি ওয়েব সার্ভিসের ইন্টারফেস:
package com.example.ws;
import javax.jws.WebService;
@WebService
public interface HelloWorldService {
String sayHello(String name);
}
Spring Boot ব্যবহার করে Apache CXF ওয়েব সার্ভিস তৈরি করতে পারেন, যা কনফিগারেশন এবং সার্ভিস প্রোপার্টি ম্যানেজমেন্ট অনেক সহজ করে।
Spring Boot অ্যাপ্লিকেশন ক্লাসে Apache CXF ওয়েব সার্ভিস কনফিগার করুন:
package com.example.rest;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.bus.spring.SpringBus;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class CxfSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(CxfSpringBootApplication.class, args);
}
@Bean
public CommandLineRunner run() {
return args -> {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloWorldService.class);
factory.setAddress("/helloWorld");
factory.setServiceBean(new HelloWorldServiceImpl());
Server server = factory.create();
System.out.println("Service started at: http://localhost:8080/helloWorld");
};
}
}
এখানে JaxWsServerFactoryBean
ব্যবহার করে ওয়েব সার্ভিস চালু করা হচ্ছে এবং CommandLineRunner
এর মাধ্যমে Spring Boot অ্যাপ্লিকেশন স্টার্ট হলে সার্ভিস শুরু হবে।
এই ক্লাসগুলো আগের মতোই থাকবে, যা SOAP মেসেজ প্রসেস করবে এবং sayHello
মেথডের মাধ্যমে বার্তা প্রদান করবে।
এখন, Spring কনফিগারেশন ব্যবহার করে তৈরি করা ওয়েব সার্ভিসে ক্লায়েন্ট তৈরি করতে হবে। ক্লায়েন্টটি SOAP ওয়েব সার্ভিস থেকে তথ্য অনুরোধ করবে এবং উত্তর গ্রহণ করবে।
আপনি WebServiceTemplate
ব্যবহার করে Spring-এর মাধ্যমে SOAP ওয়েব সার্ভিসে ক্লায়েন্ট তৈরি করতে পারেন।
Spring এবং Apache CXF এর ইন্টিগ্রেশন দ্বারা আপনি একটি শক্তিশালী এবং স্কেলেবল ওয়েব সার্ভিস অ্যাপ্লিকেশন তৈরি করতে পারেন। Spring-এর সহজ কনফিগারেশন ক্ষমতা এবং Apache CXF-এর ওয়েব সার্ভিস ফিচার একত্রিত হলে ওয়েব সার্ভিস ডেভেলপমেন্ট অনেক বেশি সহজ হয়ে ওঠে।
Read more